JavaScriptãã©ã€ããŒãã·ã³ãã«ã§ã¯ã©ã¹ã®å éšç¶æ ãä¿è·ããå ç¢ã§ä¿å®æ§ã®é«ãã³ãŒããäœæããæ¹æ³ãåŠã³ãŸããã¢ãã³JSéçºã®ãã¹ããã©ã¯ãã£ã¹ãšé«åºŠãªäœ¿çšäŸã解説ã
JavaScriptã®ãã©ã€ããŒãã·ã³ãã«ïŒã¯ã©ã¹å éšã¡ã³ããŒã®ã«ãã»ã«å
é²åãç¶ããJavaScriptéçºã®äžçã«ãããŠãã¯ãªãŒã³ã§ä¿å®æ§ãé«ããå ç¢ãªã³ãŒããæžãããšã¯æãéèŠã§ãããããéæããããã®éèŠãªåŽé¢ã®äžã€ãã«ãã»ã«åã§ããããã¯ãããŒã¿ãšãããæäœããã¡ãœãããåäžã®ãŠãããïŒéåžžã¯ã¯ã©ã¹ïŒã«ãŸãšããå éšã®å®è£ 詳现ãå€éšã®äžçããé ããšããå®è·µã§ããããã«ãããå éšç¶æ ã®å¶çºçãªå€æŽãé²ããã³ãŒãã䜿çšããã¯ã©ã€ã¢ã³ãã«åœ±é¿ãäžããããšãªãå®è£ ã倿Žã§ããããã«ãªããŸãã
åæã®JavaScriptã«ã¯ãå³å¯ãªãã©ã€ãã·ãŒã匷å¶ããçã®ã¡ã«ããºã ããããŸããã§ãããéçºè ã¯ãã°ãã°ãã¡ã³ããŒãå éšäœ¿çšã®ã¿ãæå³ããŠããããšã瀺ãããã«ãããããã£ã«ã¢ã³ããŒã¹ã³ã¢ `_` ãä»ãããšãã£ãåœåèŠåã«é Œã£ãŠããŸããããããããããã®èŠåã¯åãªãæ £ç¿ã«éãããå€éšã®ã³ãŒãããããã®ããã©ã€ããŒããã¡ã³ããŒã«çŽæ¥ã¢ã¯ã»ã¹ããŠå€æŽããããšã劚ãããã®ã¯äœããããŸããã§ããã
ES6 (ECMAScript 2015)ã®å°å
¥ã«ãããSymbolãšããããªããã£ãããŒã¿åããã©ã€ãã·ãŒãå®çŸããããã®æ°ããã¢ãããŒããæäŸããŸãããä»ã®ããã€ãã®èšèªã®äŒçµ±çãªæå³ã§ã®*å³å¯ãª*ãã©ã€ããŒãã§ã¯ãããŸããããã·ã³ãã«ã¯ãªããžã§ã¯ãããããã£ã®ããŒãšããŠäœ¿çšã§ãããŠããŒã¯ã§æšæž¬äžå¯èœãªèå¥åãæäŸããŸããããã«ãããå€éšã³ãŒãããããã®ããããã£ã«ã¢ã¯ã»ã¹ããããšã¯äžå¯èœã§ã¯ãªããã®ã®ãéåžžã«å°é£ã«ãªããäºå®äžãã©ã€ããŒã颚ã®ã«ãã»ã«åãå®çŸããŸãã
ã·ã³ãã«ã®çè§£
ãã©ã€ããŒãã·ã³ãã«ã«é£ã³èŸŒãåã«ãã·ã³ãã«ãäœã§ããããç°¡åã«åŸ©ç¿ããŸãããã
Symbolã¯ES6ã§å°å
¥ãããããªããã£ãããŒã¿åã§ããæååãæ°å€ãšã¯ç°ãªããã·ã³ãã«ã¯åžžã«ãŠããŒã¯ã§ããåã説æãæã€2ã€ã®ã·ã³ãã«ãäœæãããšããŠãããããã¯åºå¥ãããŸãã
const symbol1 = Symbol('mySymbol');
const symbol2 = Symbol('mySymbol');
console.log(symbol1 === symbol2); // Output: false
ã·ã³ãã«ã¯ãªããžã§ã¯ãã®ããããã£ããŒãšããŠäœ¿çšã§ããŸãã
const obj = {
[symbol1]: 'Hello, world!',
};
console.log(obj[symbol1]); // Output: Hello, world!
ã·ã³ãã«ã®éèŠãªç¹åŸŽã§ããããã©ã€ãã·ãŒã«åœ¹ç«ã€ç¹ã¯ãããããåæå¯èœã§ã¯ãªããšããããšã§ããããã¯ãObject.keys()ãObject.getOwnPropertyNames()ãfor...inã«ãŒããªã©ããªããžã§ã¯ãã®ããããã£ãå埩åŠçããããã®æšæºçãªã¡ãœããããã·ã³ãã«ãããŒãšããããããã£ãå«ãŸãªãããšãæå³ããŸãã
ãã©ã€ããŒãã·ã³ãã«ã®äœæ
ãã©ã€ããŒãã·ã³ãã«ãäœæããã«ã¯ãã¯ã©ã¹å®çŸ©ã®å€åŽãéåžžã¯ã¢ãžã¥ãŒã«ããã¡ã€ã«ã®å é ã§ã·ã³ãã«å€æ°ã宣èšããã ãã§ããããã«ãããã·ã³ãã«ã¯ãã®ã¢ãžã¥ãŒã«å ã§ã®ã¿ã¢ã¯ã»ã¹å¯èœã«ãªããŸãã
const _privateData = Symbol('privateData');
const _privateMethod = Symbol('privateMethod');
class MyClass {
constructor(data) {
this[_privateData] = data;
}
[_privateMethod]() {
console.log('This is a private method.');
}
publicMethod() {
console.log(`Data: ${this[_privateData]}`);
this[_privateMethod]();
}
}
ãã®äŸã§ã¯ã_privateDataãš_privateMethodã¯ãMyClasså
ã§ãã©ã€ããŒãããŒã¿ãšãã©ã€ããŒãã¡ãœãããæ ŒçŽããã³ã¢ã¯ã»ã¹ããããã®ããŒãšããŠäœ¿çšãããã·ã³ãã«ã§ãããããã®ã·ã³ãã«ã¯ã¯ã©ã¹ã®å€ã§å®çŸ©ãããå
‹nj
¬éãããŠããªããããå€éšã®ã³ãŒãããã¯äºå®äžé ãããŠããŸãã
ãã©ã€ããŒãã·ã³ãã«ãžã®ã¢ã¯ã»ã¹
ãã©ã€ããŒãã·ã³ãã«ã¯åæå¯èœã§ã¯ãããŸããããå®å
šã«ã¢ã¯ã»ã¹äžå¯èœãšããããã§ã¯ãããŸãããObject.getOwnPropertySymbols()ã¡ãœããã䜿çšãããšããªããžã§ã¯ãã®ã·ã³ãã«ãããŒãšãããã¹ãŠã®ããããã£ã®é
åãååŸã§ããŸãã
const myInstance = new MyClass('Sensitive information');
const symbols = Object.getOwnPropertySymbols(myInstance);
console.log(symbols); // Output: [Symbol(privateData), Symbol(privateMethod)]
// You can then use these symbols to access the private data.
console.log(myInstance[symbols[0]]); // Output: Sensitive information
ãããããã®æ¹æ³ã§ãã©ã€ããŒãã¡ã³ããŒã«ã¢ã¯ã»ã¹ããã«ã¯ãã·ã³ãã«èªäœã«é¢ããæç€ºçãªç¥èãå¿ èŠã§ãããããã®ã·ã³ãã«ã¯éåžžãã¯ã©ã¹ãå®çŸ©ãããŠããã¢ãžã¥ãŒã«å ã§ã®ã¿å©çšå¯èœã§ãããããå€éšã®ã³ãŒããå¶çºçãŸãã¯æªæãæã£ãŠã¢ã¯ã»ã¹ããããšã¯å°é£ã§ããããããã·ã³ãã«ã®ããã©ã€ããŒã颚ããªæ§è³ªãçºæ®ãããç¹ã§ãã絶察çãªãã©ã€ãã·ãŒãæäŸããããã§ã¯ãããŸããããåœåèŠåã«æ¯ã¹ãŠå€§å¹ ãªæ¹åããããããŸãã
ãã©ã€ããŒãã·ã³ãã«ã䜿çšããå©ç¹
- ã«ãã»ã«å: ãã©ã€ããŒãã·ã³ãã«ã¯ãå éšã®å®è£ 詳现ãé ãããšã§ã«ãã»ã«åã匷å¶ããå€éšã®ã³ãŒãããªããžã§ã¯ãã®å éšç¶æ ãå¶çºçãŸãã¯æå³çã«å€æŽããã®ãé£ããããŸãã
- ååã®è¡çªãªã¹ã¯ã®äœæž: ã·ã³ãã«ã¯ãŠããŒã¯ã§ããããšãä¿èšŒãããŠãããããã³ãŒãã®ç°ãªãéšåã§é¡äŒŒããååã®ããããã£ã䜿çšããéã®ååã®è¡çªãªã¹ã¯ãæé€ããŸããããã¯ãå€§èŠæš¡ãªãããžã§ã¯ãããµãŒãããŒãã£ã®ã©ã€ãã©ãªãæ±ãå Žåã«ç¹ã«åœ¹ç«ã¡ãŸãã
- ã³ãŒãã®ä¿å®æ§ã®åäž: å éšç¶æ ãã«ãã»ã«åããããšã§ãã¯ã©ã¹ã®å ¬éã€ã³ã¿ãŒãã§ãŒã¹ã«äŸåããå€éšã³ãŒãã«åœ±é¿ãäžããããšãªããã¯ã©ã¹ã®å®è£ ã倿Žã§ããŸããããã«ãããã³ãŒãã®ä¿å®æ§ãé«ãŸãããªãã¡ã¯ã¿ãªã³ã°ã容æã«ãªããŸãã
- ããŒã¿ã®æŽåæ§: ãªããžã§ã¯ãã®å éšããŒã¿ãä¿è·ããããšã§ããã®ç¶æ ãäžè²«æ§ãä¿ã¡ãæå¹ã§ããããšãä¿èšŒããŸããããã«ããããã°ãäºæãã¬åäœã®ãªã¹ã¯ãæžå°ããŸãã
䜿çšäŸãšå ·äœäŸ
ãã©ã€ããŒãã·ã³ãã«ãæçãšãªãåŸãããã€ãã®å®çšçãªäœ¿çšäŸãèŠãŠãããŸãããã
1. å®å šãªããŒã¿ã¹ãã¬ãŒãž
ãŠãŒã¶ãŒã®èªèšŒæ å ±ãè²¡åæ å ±ãªã©ãæ©å¯ããŒã¿ãæ±ãã¯ã©ã¹ãèããŠã¿ãŸãããããã©ã€ããŒãã·ã³ãã«ã䜿çšãããšããã®ããŒã¿ãå€éšã³ãŒãããã¢ã¯ã»ã¹ãã«ããæ¹æ³ã§ä¿åã§ããŸãã
const _username = Symbol('username');
const _password = Symbol('password');
class User {
constructor(username, password) {
this[_username] = username;
this[_password] = password;
}
authenticate(providedPassword) {
// Simulate password hashing and comparison
if (providedPassword === this[_password]) {
return true;
} else {
return false;
}
}
// Expose only necessary information through a public method
getPublicProfile() {
return { username: this[_username] };
}
}
ãã®äŸã§ã¯ããŠãŒã¶ãŒåãšãã¹ã¯ãŒãã¯ãã©ã€ããŒãã·ã³ãã«ã䜿çšããŠä¿åãããŠããŸããauthenticate()ã¡ãœããã¯æ€èšŒã®ããã«ãã©ã€ããŒããªãã¹ã¯ãŒãã䜿çšããgetPublicProfile()ã¡ãœããã¯ãŠãŒã¶ãŒåã®ã¿ãå
¬éããããšã§ãå€éšã³ãŒããããã¹ã¯ãŒããžã®çŽæ¥ã¢ã¯ã»ã¹ãé²ããŸãã
2. UIã³ã³ããŒãã³ãã«ãããç¶æ 管ç
UIã³ã³ããŒãã³ãã©ã€ãã©ãªïŒäŸïŒReactãVue.jsãAngularïŒã§ã¯ããã©ã€ããŒãã·ã³ãã«ã䜿çšããŠã³ã³ããŒãã³ãã®å éšç¶æ ã管çããå€éšã³ãŒããçŽæ¥ãããæäœããã®ãé²ãããšãã§ããŸãã
const _componentState = Symbol('componentState');
class MyComponent {
constructor(initialState) {
this[_componentState] = initialState;
}
setState(newState) {
// Perform state updates and trigger re-rendering
this[_componentState] = { ...this[_componentState], ...newState };
this.render();
}
render() {
// Update the UI based on the current state
console.log('Rendering component with state:', this[_componentState]);
}
}
ããã§ã_componentStateã·ã³ãã«ã¯ã³ã³ããŒãã³ãã®å
éšç¶æ
ãä¿åããŸããsetState()ã¡ãœããã¯ç¶æ
ãæŽæ°ããããã«äœ¿çšãããç¶æ
ã®æŽæ°ãå¶åŸ¡ãããæ¹æ³ã§åŠçãããå¿
èŠãªãšãã«ã³ã³ããŒãã³ããåã¬ã³ããªã³ã°ãããããšãä¿èšŒããŸããå€éšã³ãŒãã¯ç¶æ
ãçŽæ¥å€æŽã§ããªããããããŒã¿ã®æŽåæ§ãšã³ã³ããŒãã³ãã®é©åãªåäœãä¿èšŒãããŸãã
3. ããŒã¿æ€èšŒã®å®è£
ãã©ã€ããŒãã·ã³ãã«ã䜿çšããŠãã¯ã©ã¹å ã«æ€èšŒããžãã¯ãšãšã©ãŒã¡ãã»ãŒãžãä¿åããå€éšã³ãŒããæ€èšŒã«ãŒã«ããã€ãã¹ããã®ãé²ãããšãã§ããŸãã
const _validateAge = Symbol('validateAge');
const _ageErrorMessage = Symbol('ageErrorMessage');
class Person {
constructor(name, age) {
this.name = name;
this[_validateAge](age);
}
[_validateAge](age) {
if (age < 0 || age > 150) {
this[_ageErrorMessage] = 'Age must be between 0 and 150.';
throw new Error(this[_ageErrorMessage]);
} else {
this.age = age;
this[_ageErrorMessage] = null; // Reset error message
}
}
getAge() {
return this.age;
}
getErrorMessage() {
return this[_ageErrorMessage];
}
}
ãã®äŸã§ã¯ã_validateAgeã·ã³ãã«ã¯å¹Žéœ¢ã®æ€èšŒãè¡ããã©ã€ããŒãã¡ãœãããæããŠããŸãã_ageErrorMessageã·ã³ãã«ã¯ã幎霢ãç¡å¹ãªå Žåã«ãšã©ãŒã¡ãã»ãŒãžãä¿åããŸããããã«ãããå€éšã³ãŒããç¡å¹ãªå¹Žéœ¢ãçŽæ¥èšå®ããã®ãé²ããPersonãªããžã§ã¯ããäœæããéã«æ€èšŒããžãã¯ãåžžã«å®è¡ãããããšãä¿èšŒããŸããgetErrorMessage()ã¡ãœããã¯ãæ€èšŒãšã©ãŒãååšããå Žåã«ããã«ã¢ã¯ã»ã¹ããæ¹æ³ãæäŸããŸãã
é«åºŠãªäœ¿çšäŸ
åºæ¬çãªäŸãè¶ ããŠããã©ã€ããŒãã·ã³ãã«ã¯ããé«åºŠãªã·ããªãªã§äœ¿çšããããšãã§ããŸãã
1. WeakMapããŒã¹ã®ãã©ã€ããŒãããŒã¿
ããå
ç¢ãªãã©ã€ãã·ãŒãžã®ã¢ãããŒããšããŠãWeakMapã®äœ¿çšãæ€èšããŠãã ãããWeakMapã䜿çšãããšããªããžã§ã¯ããä»ã®å Žæã§åç
§ãããªããªã£ãå Žåã«ã¬ããŒãžã³ã¬ã¯ã·ã§ã³ãããã®ã劚ããããšãªããããŒã¿ããªããžã§ã¯ãã«é¢é£ä»ããããšãã§ããŸãã
const privateData = new WeakMap();
class MyClass {
constructor(data) {
privateData.set(this, { secret: data });
}
getData() {
return privateData.get(this).secret;
}
}
ãã®ã¢ãããŒãã§ã¯ããã©ã€ããŒãããŒã¿ã¯WeakMapã«ä¿åãããMyClassã®ã€ã³ã¹ã¿ã³ã¹ãããŒãšããŠäœ¿çšãããŸããå€éšã³ãŒãã¯WeakMapã«çŽæ¥ã¢ã¯ã»ã¹ã§ããªããããããŒã¿ã¯çã«ãã©ã€ããŒãã«ãªããŸããMyClassã€ã³ã¹ã¿ã³ã¹ãåç
§ãããªããªããšãããã¯WeakMapå
ã®é¢é£ããŒã¿ãšãšãã«ã¬ããŒãžã³ã¬ã¯ã·ã§ã³ãããŸãã
2. Mixinãšãã©ã€ããŒãã·ã³ãã«
ãã©ã€ããŒãã·ã³ãã«ã䜿çšããŠãæ¢åã®ããããã£ãšå¹²æžããããšãªããã¯ã©ã¹ã«ãã©ã€ããŒãã¡ã³ããŒã远å ããMixinãäœæã§ããŸãã
const _mixinPrivate = Symbol('mixinPrivate');
const myMixin = (Base) =>
class extends Base {
constructor(...args) {
super(...args);
this[_mixinPrivate] = 'Mixin private data';
}
getMixinPrivate() {
return this[_mixinPrivate];
}
};
class MyClass extends myMixin(Object) {
constructor() {
super();
}
}
const instance = new MyClass();
console.log(instance.getMixinPrivate()); // Output: Mixin private data
ããã«ãããMixinã®å éšããŒã¿ã®ãã©ã€ãã·ãŒãç¶æããªãããã¢ãžã¥ãŒã«æ¹åŒã§ã¯ã©ã¹ã«æ©èœã远å ã§ããŸãã
èæ ®äºé ãšå¶é
- çã®ãã©ã€ãã·ãŒã§ã¯ãªã: åè¿°ã®éãããã©ã€ããŒãã·ã³ãã«ã¯çµ¶å¯Ÿçãªãã©ã€ãã·ãŒãæäŸããŸãããæ¬æ°ã§ã¢ã¯ã»ã¹ããããšãã人ãããã°ã
Object.getOwnPropertySymbols()ã䜿çšããŠã¢ã¯ã»ã¹ããããšãå¯èœã§ãã - ãããã°: ãã©ã€ããŒãã·ã³ãã«ã䜿çšããã³ãŒãã®ãããã°ã¯ããã©ã€ããŒãããããã£ãæšæºçãªãããã°ããŒã«ã§ç°¡åã«èŠããªããããããå°é£ã«ãªãããšããããŸããäžéšã®IDEããããã¬ã¯ã·ã³ãã«ããŒä»ãããããã£ã®æ€æ»ããµããŒãããŠããŸãããããã«ã¯è¿œå ã®èšå®ãå¿ èŠãªå ŽåããããŸãã
- ããã©ãŒãã³ã¹: ã·ã³ãã«ãããããã£ããŒãšããŠäœ¿çšãããšãéåžžã®æååã䜿çšããå Žåãšæ¯èŒããŠããããªããã©ãŒãã³ã¹ãªãŒããŒããããçºçããå¯èœæ§ããããŸãããããã¯ã»ãšãã©ã®å Žåã§ç¡èŠã§ããã¬ãã«ã§ãã
ãã¹ããã©ã¯ãã£ã¹
- ã·ã³ãã«ãã¢ãžã¥ãŒã«ã¹ã³ãŒãã§å®£èšãã: ãã©ã€ããŒãã·ã³ãã«ã¯ãã¯ã©ã¹ãå®çŸ©ãããŠããã¢ãžã¥ãŒã«ããã¡ã€ã«ã®å é ã§å®çŸ©ãããã®ã¢ãžã¥ãŒã«å ã§ã®ã¿ã¢ã¯ã»ã¹ã§ããããã«ããŸãã
- èšè¿°çãªã·ã³ãã«ã®èª¬æã䜿çšãã: ãããã°ãã³ãŒãã®çè§£ãå©ããããã«ãã·ã³ãã«ã«æå³ã®ãã説æãæäŸããŸãã
- ã·ã³ãã«ãå ¬ã«å ¬éããªã: ãã©ã€ããŒãã·ã³ãã«èªäœããããªãã¯ã¡ãœãããããããã£ãéããŠå ¬éããªãã§ãã ããã
- ãã匷åãªãã©ã€ãã·ãŒã®ããã«ã¯WeakMapãæ€èšãã: ããé«ãã¬ãã«ã®ãã©ã€ãã·ãŒãå¿
èŠãªå Žåã¯ã
WeakMapã䜿çšããŠãã©ã€ããŒãããŒã¿ãä¿åããããšãæ€èšããŠãã ããã - ã³ãŒããææžåãã: ã©ã®ããããã£ãã¡ãœããããã©ã€ããŒãã§ããããšãæå³ããŠãããããããã©ã®ããã«ä¿è·ãããŠããããæç¢ºã«ææžåããŸãã
ãã©ã€ããŒãã·ã³ãã«ã®ä»£æ¿æ¡
ãã©ã€ããŒãã·ã³ãã«ã¯äŸ¿å©ãªããŒã«ã§ãããJavaScriptã§ã«ãã»ã«åãå®çŸããããã®ä»ã®ã¢ãããŒãããããŸãã
- åœåèŠåïŒã¢ã³ããŒã¹ã³ã¢æ¥é èŸïŒ: åè¿°ã®éãããã©ã€ããŒãã¡ã³ããŒã瀺ãããã«ã¢ã³ããŒã¹ã³ã¢æ¥é èŸïŒ
_ïŒã䜿çšããã®ã¯äžè¬çãªæ £ç¿ã§ãããçã®ãã©ã€ãã·ãŒã匷å¶ãããã®ã§ã¯ãããŸããã - ã¯ããŒãžã£: ã¯ããŒãžã£ã䜿çšããŠã颿°ã®ã¹ã³ãŒãå ã§ã®ã¿ã¢ã¯ã»ã¹å¯èœãªãã©ã€ããŒã倿°ãäœæã§ããŸããããã¯JavaScriptã«ããããã©ã€ãã·ãŒã®ããäŒçµ±çãªã¢ãããŒãã§ããããã©ã€ããŒãã·ã³ãã«ã䜿çšãããããæè»æ§ãäœãå ŽåããããŸãã
- ãã©ã€ããŒãã¯ã©ã¹ãã£ãŒã«ãïŒ
#ïŒ: ææ°ããŒãžã§ã³ã®JavaScriptã§ã¯ã#æ¥é èŸã䜿çšããçã®ãã©ã€ããŒãã¯ã©ã¹ãã£ãŒã«ããå°å ¥ãããŠããŸããããã¯JavaScriptã¯ã©ã¹ã§ãã©ã€ãã·ãŒãå®çŸããããã®æãå ç¢ã§æšæºåãããæ¹æ³ã§ãããã ããå€ããã©ãŠã¶ãç°å¢ã§ã¯ãµããŒããããŠããªãå ŽåããããŸãã
ãã©ã€ããŒãã¯ã©ã¹ãã£ãŒã«ãïŒ#æ¥é èŸïŒ - JavaScriptã«ããããã©ã€ãã·ãŒã®æªæ¥
JavaScriptã«ããããã©ã€ãã·ãŒã®æªæ¥ã¯ãééããªã#æ¥é èŸã§ç€ºããããã©ã€ããŒãã¯ã©ã¹ãã£ãŒã«ãã«ãããŸãããã®æ§æã¯*çã®*ãã©ã€ããŒãã¢ã¯ã»ã¹ãæäŸããŸããã¯ã©ã¹å
ã§å®£èšãããã³ãŒãã®ã¿ããããã®ãã£ãŒã«ãã«ã¢ã¯ã»ã¹ã§ããŸããã¯ã©ã¹ã®å€éšããã¯ã¢ã¯ã»ã¹ããããšããæ€åºããããšãããã§ããŸãããããã¯ãããœããããªãã©ã€ãã·ãŒããæäŸããªãã·ã³ãã«ã«æ¯ã¹ãŠå€§ããªæ¹åç¹ã§ãã
class Counter {
#count = 0; // Private field
increment() {
this.#count++;
}
getCount() {
return this.#count;
}
}
const counter = new Counter();
counter.increment();
console.log(counter.getCount()); // Output: 1
// console.log(counter.#count); // Error: Private field '#count' must be declared in an enclosing class
ãã©ã€ããŒãã¯ã©ã¹ãã£ãŒã«ãã®äž»ãªå©ç¹:
- çã®ãã©ã€ãã·ãŒ: å€éšããã®ã¢ã¯ã»ã¹ã«å¯ŸããŠå®éã®ä¿è·ãæäŸããŸãã
- åé¿çãªã: ã·ã³ãã«ãšã¯ç°ãªãããã©ã€ããŒããã£ãŒã«ãã®ãã©ã€ãã·ãŒãåé¿ããããã®çµã¿èŸŒã¿ã®æ¹æ³ã¯ãããŸããã
- æç¢ºã:
#æ¥é èŸã¯ããã£ãŒã«ãããã©ã€ããŒãã§ããããšãæç¢ºã«ç€ºããŸãã
äž»ãªæ¬ ç¹ã¯ãã©ãŠã¶ã®äºææ§ã§ãã䜿çšããåã«ãã¿ãŒã²ããç°å¢ããã©ã€ããŒãã¯ã©ã¹ãã£ãŒã«ãããµããŒãããŠããããšã確èªããŠãã ãããBabelã®ãããªãã©ã³ã¹ãã€ã©ã䜿çšããããšã§ãå€ãç°å¢ãšã®äºææ§ãæäŸã§ããŸãã
çµè«
ãã©ã€ããŒãã·ã³ãã«ã¯ãå
éšç¶æ
ãã«ãã»ã«åããJavaScriptã³ãŒãã®ä¿å®æ§ãåäžãããããã®è²Žéãªã¡ã«ããºã ãæäŸããŸãã絶察çãªãã©ã€ãã·ãŒã¯æäŸããŸããããåœåèŠåã«æ¯ã¹ãŠå€§å¹
ãªæ¹åããããããå€ãã®ã·ããªãªã§å¹æçã«äœ¿çšã§ããŸããJavaScriptãé²åãç¶ããäžã§ãå®å
šã§ä¿å®æ§ã®é«ãã³ãŒããæžãããã®ææ°ã®æ©èœããã¹ããã©ã¯ãã£ã¹ã«ã€ããŠåžžã«æ
å ±ãåŸãããšãéèŠã§ããã·ã³ãã«ã¯æ£ããæ¹åãžã®äžæ©ã§ãããããã©ã€ããŒãã¯ã©ã¹ãã£ãŒã«ãïŒ#ïŒã®å°å
¥ã¯ãJavaScriptã¯ã©ã¹ã§çã®ãã©ã€ãã·ãŒãéæããããã®çŸåšã®ãã¹ããã©ã¯ãã£ã¹ã衚ããŠããŸãããããžã§ã¯ãã®èŠä»¶ãšã¿ãŒã²ããç°å¢ã«åºã¥ããŠãé©åãªã¢ãããŒããéžæããŠãã ããã2024幎çŸåšããã®å
ç¢æ§ãšæç¢ºããããå¯èœãªéã#èšæ³ã䜿çšããããšãåŒ·ãæšå¥šãããŸãã
ãããã®æè¡ãçè§£ãæŽ»çšããããšã§ãããå ç¢ã§ãä¿å®æ§ãé«ããå®å šãªJavaScriptã¢ããªã±ãŒã·ã§ã³ãäœæã§ããŸãããããžã§ã¯ãã®ç¹å®ã®ããŒãºãèæ ®ãããã©ã€ãã·ãŒãããã©ãŒãã³ã¹ãäºææ§ã®ãã©ã³ã¹ãæãåããã¢ãããŒããéžæããããšãå¿ããªãã§ãã ããã